//
//  UIFont+ChangeMethod.m
//  laozhouzhuanshuo
//
//  Created by apple on 2018/5/15.
//  Copyright © 2018年 zipingfang. All rights reserved.
//

#import "UIFont+ChangeMethod.h"
#import <objc/runtime.h>

@implementation UIFont (ChangeMethod)

//用Runtime将方法调换
//load方法在加载分类至内存的时候调用 方法的交换要在消息传递之前
+(void)load {
    //保证交换方法只执行一次
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Method fontWithName = class_getClassMethod(self, @selector(fontWithName:size:));
        Method font_WithName = class_getClassMethod(self, @selector(font_WithName:size:));
        method_exchangeImplementations(fontWithName, font_WithName);
    });
}

//即便字体不存在 字体大小还保证是理想值
+(UIFont *)font_WithName:(NSString *)fontName size:(CGFloat)fontSize {
    
    UIFont *font = [UIFont font_WithName:fontName size:fontSize];
    if (!font) {
        //如果系统没有这样的字体
//        NSLog(@"%@不存在 设置了默认字体 大小---->%f",fontName,fontSize);
        font = [UIFont systemFontOfSize:fontSize];
    }
    
    return font;
}

@end
